home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / chpevd.z / chpevd
Text File  |  1996-03-14  |  5KB  |  133 lines

  1.  
  2.  
  3.  
  4. CCCCHHHHPPPPEEEEVVVVDDDD((((3333FFFF))))                                                          CCCCHHHHPPPPEEEEVVVVDDDD((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CHPEVD - compute all the eigenvalues and, optionally, eigenvectors of a
  10.      complex Hermitian matrix A in packed storage
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CHPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK,
  14.                         LRWORK, IWORK, LIWORK, INFO )
  15.  
  16.          CHARACTER      JOBZ, UPLO
  17.  
  18.          INTEGER        INFO, LDZ, LIWORK, LRWORK, LWORK, N
  19.  
  20.          INTEGER        IWORK( * )
  21.  
  22.          REAL           RWORK( * ), W( * )
  23.  
  24.          COMPLEX        AP( * ), WORK( * ), Z( LDZ, * )
  25.  
  26. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  27.      CHPEVD computes all the eigenvalues and, optionally, eigenvectors of a
  28.      complex Hermitian matrix A in packed storage.  If eigenvectors are
  29.      desired, it uses a divide and conquer algorithm.
  30.  
  31.      The divide and conquer algorithm makes very mild assumptions about
  32.      floating point arithmetic. It will work on machines with a guard digit in
  33.      add/subtract, or on those binary machines without guard digits which
  34.      subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could
  35.      conceivably fail on hexadecimal or decimal machines without guard digits,
  36.      but we know of none.
  37.  
  38.  
  39. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  40.      JOBZ    (input) CHARACTER*1
  41.              = 'N':  Compute eigenvalues only;
  42.              = 'V':  Compute eigenvalues and eigenvectors.
  43.  
  44.      UPLO    (input) CHARACTER*1
  45.              = 'U':  Upper triangle of A is stored;
  46.              = 'L':  Lower triangle of A is stored.
  47.  
  48.      N       (input) INTEGER
  49.              The order of the matrix A.  N >= 0.
  50.  
  51.      AP      (input/output) COMPLEX array, dimension (N*(N+1)/2)
  52.              On entry, the upper or lower triangle of the Hermitian matrix A,
  53.              packed columnwise in a linear array.  The j-th column of A is
  54.              stored in the array AP as follows:  if UPLO = 'U', AP(i + (j-
  55.              1)*j/2) = A(i,j) for 1<=i<=j; if UPLO = 'L', AP(i + (j-1)*(2*n-
  56.              j)/2) = A(i,j) for j<=i<=n.
  57.  
  58.              On exit, AP is overwritten by values generated during the
  59.              reduction to tridiagonal form.  If UPLO = 'U', the diagonal and
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCHHHHPPPPEEEEVVVVDDDD((((3333FFFF))))                                                          CCCCHHHHPPPPEEEEVVVVDDDD((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              first superdiagonal of the tridiagonal matrix T overwrite the
  75.              corresponding elements of A, and if UPLO = 'L', the diagonal and
  76.              first subdiagonal of T overwrite the corresponding elements of A.
  77.  
  78.      W       (output) REAL array, dimension (N)
  79.              If INFO = 0, the eigenvalues in ascending order.
  80.  
  81.      Z       (output) COMPLEX array, dimension (LDZ, N)
  82.              If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
  83.              eigenvectors of the matrix A, with the i-th column of Z holding
  84.              the eigenvector associated with W(i).  If JOBZ = 'N', then Z is
  85.              not referenced.
  86.  
  87.      LDZ     (input) INTEGER
  88.              The leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
  89.              'V', LDZ >= max(1,N).
  90.  
  91.      WORK    (workspace/output) COMPLEX array, dimension (LWORK)
  92.              On exit, if LWORK > 0, WORK(1) returns the optimal LWORK.
  93.  
  94.      LWORK   (input) INTEGER
  95.              The dimension of array WORK.  If N <= 1,               LWORK must
  96.              be at least 1.  If JOBZ = 'N' and N > 1, LWORK must be at least
  97.              N.  If JOBZ = 'V' and N > 1, LWORK must be at least 2*N.
  98.  
  99.      RWORK   (workspace/output) REAL array,
  100.              dimension (LRWORK) On exit, if LRWORK > 0, RWORK(1) returns the
  101.              optimal LRWORK.
  102.  
  103.      LRWORK  (input) INTEGER
  104.              The dimension of array RWORK.  If N <= 1,               LRWORK
  105.              must be at least 1.  If JOBZ = 'N' and N > 1, LRWORK must be at
  106.              least N.  If JOBZ = 'V' and N > 1, LRWORK must be at least 1 +
  107.              4*N + 2*N*lg N + 3*N**2 , where lg( N ) = smallest integer k such
  108.              that 2**k >= N.
  109.  
  110.      IWORK   (workspace/output) INTEGER array, dimension (LIWORK)
  111.              On exit, if LIWORK > 0, IWORK(1) returns the optimal LIWORK.
  112.  
  113.      LIWORK  (input) INTEGER
  114.              The dimension of array IWORK.  If JOBZ  = 'N' or N <= 1, LIWORK
  115.              must be at least 1.  If JOBZ  = 'V' and N > 1, LIWORK must be at
  116.              least 2 + 5*N.
  117.  
  118.      INFO    (output) INTEGER
  119.              = 0:  successful exit
  120.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  121.              > 0:  if INFO = i, the algorithm failed to converge; i off-
  122.              diagonal elements of an intermediate tridiagonal form did not
  123.              converge to zero.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.